﻿Imports lbGlobalcom
Public Class fMovimiInventarios
    Dim daMovimi As lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTOTableAdapter
    Dim daMovimiDetalle As lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTODETALLETableAdapter
    Dim daMovimiDetDescri As lbGlobalcom.dsMovimientoTableAdapters.MOV_DESCRIPCIONDETTableAdapter
    Dim daTipoDoc As lbGlobalcom.dsGlobalTableAdapters.GLO_TIPODOCUMENTOTableAdapter
    Dim daTerce As lbGlobalcom.dsTerceroTableAdapters.TER_TERCEROTableAdapter
    Dim daProv As lbGlobalcom.dsTerceroTableAdapters.TER_PROVEEDORESTableAdapter
    Dim daCli As lbGlobalcom.dsTerceroTableAdapters.TER_CLIENTESTableAdapter
    Dim daVen As lbGlobalcom.dsTerceroTableAdapters.TER_VENDEDORTableAdapter
    Dim daTipoSubProd As lbGlobalcom.dsGlobalTableAdapters.GLO_DATOSTABLASTableAdapter
    Dim daInv As lbGlobalcom.dsInventariosTableAdapters.INV_DETALLETableAdapter
    Dim daPrepack As lbGlobalcom.dsInventariosTableAdapters.INV_PREPACKTableAdapter
    Dim CantOld As Integer = 0
    Dim drProv As lbGlobalcom.dsTercero.TER_PROVEEDORESRow
    Dim drCli As lbGlobalcom.dsTercero.TER_CLIENTESRow
    Dim drVen As lbGlobalcom.dsTercero.TER_VENDEDORRow
    Dim cListaP As lbGlobalcom.cEncaListaPrecios
    Dim cDetLis As lbGlobalcom.cDetalleListaPrecios

    Dim cCom As lbGlobalcom.cCompra
    Dim iTipoDoc As cTipoDocumento
    Dim iBodOri As cBodegas
    Dim iBodDes As cBodegas
    Dim iFP As cFormasPago
    Private lEliminaDoc As Boolean = False
    Private lIdPrepackSel As Int16 = 0
    Private mensajeValidacion As String = ""
    Private Sub fMovimiInventarios_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If DsMovimiento.MOV_DESCRIPCIONDET.GetChanges IsNot Nothing Or DsMovimiento.MOV_MOVIMIENTODETALLE.GetChanges IsNot Nothing Or DsMovimiento.MOV_MOVIMIENTO.GetChanges IsNot Nothing Then
            If MessageBox.Show("Hay cambios pendientes por salvar, desae salvarlos", "Cambios Pendientes", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                SalvaCambios(False)
            End If
        End If
    End Sub

    Private Sub fMovimiento_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            daMovimi = New lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTOTableAdapter
            daMovimiDetalle = New lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTODETALLETableAdapter
            daMovimiDetDescri = New lbGlobalcom.dsMovimientoTableAdapters.MOV_DESCRIPCIONDETTableAdapter
            daTipoDoc = New lbGlobalcom.dsGlobalTableAdapters.GLO_TIPODOCUMENTOTableAdapter
            daTerce = New lbGlobalcom.dsTerceroTableAdapters.TER_TERCEROTableAdapter
            daTipoSubProd = New lbGlobalcom.dsGlobalTableAdapters.GLO_DATOSTABLASTableAdapter
            daInv = New lbGlobalcom.dsInventariosTableAdapters.INV_DETALLETableAdapter
            DsInventarios.INV_TIPOSPREPACKS.Merge(cGeneral.GetTiposPrepacks())
            lbGlobalcom.cGeneral.ActivaControles(Me.Controls, False)
            FECHADOCUMENTODateTimePicker.MaxDate = CustomPrincipal.Periodo.HASTAF
            FECHADOCUMENTODateTimePicker.MinDate = CustomPrincipal.Periodo.DESDEF
            If CustomPrincipal.Periodo.DESDEF <= Date.Today And CustomPrincipal.Periodo.HASTAF >= Date.Today Then
                DsMovimiento.MOV_MOVIMIENTO.Columns("FECHADOCUMENTO").DefaultValue = Date.Today
            Else
                DsMovimiento.MOV_MOVIMIENTO.Columns("FECHADOCUMENTO").DefaultValue = CustomPrincipal.Periodo.HASTAF
            End If
            DsMovimiento.MOV_MOVIMIENTO.Columns("FECHAVENCIMIENTO").DefaultValue = Date.Today
            DsMovimiento.MOV_MOVIMIENTODETALLE.Columns("IDPREPACK").DefaultValue = 0
            daTipoSubProd.FillByIdGrupo(DsGlobal.GLO_DATOSTABLAS, "sp")
            daPrepack = New lbGlobalcom.dsInventariosTableAdapters.INV_PREPACKTableAdapter
            cGeneral.BloquearOrdenDatagrid(MOV_MOVIMIENTODETALLEDataGridView)
            cGeneral.BloquearOrdenDatagrid(MOV_DESCRIPCIONDETDataGridView1)
            cActivaSeguridad.AseguraGridMovimi(MOV_MOVIMIENTODETALLEDataGridView)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub

    Private Sub btnBuscaBodOri_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaBodOri.Click
        Try
            Dim fBusBod As New fListaBodegas
            fBusBod.FiltraBySede = True
            fBusBod.idSede = IDSEDETextBox.Text
            If fBusBod.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDBODEGAORIGENTextBox.Text = fBusBod.Bodega
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub

    Private Sub btnBuscaBodDes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaBodDes.Click
        Try
            Dim fBusBod As New fListaBodegas
            'fBusBod.idSede = IDSEDETextBox.Text
            If fBusBod.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDBODEGADESTINOTextBox.Text = fBusBod.Bodega
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub

    Private Sub btnBuscaCCosto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaCCosto.Click
        Try
            Dim fCC As New fListaCCostos
            If fCC.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDCCOSTOTextBox.Text = fCC.CCosto
            End If

        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub

    Private Sub btnBuscaLista_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaLista.Click
        Try
            Dim fLP As New fListaPrecios
            If fLP.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDLISTATextBox.Text = fLP.Lista
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub
    Private Sub CargaTipoDoc(ByVal TipoDoc As String)
        Try
            iTipoDoc = New cTipoDocumento(TipoDoc)
            If iTipoDoc Is Nothing Then
                MessageBox.Show("El tipo de documento seleccionado no esta registrado", "Error en tipo de documento", MessageBoxButtons.OK, MessageBoxIcon.Stop)
            Else
                NUMEROTextBox.Text = lbGlobalcom.Consec.GetNumeroActual(TipoDoc, iTipoDoc.DocEs)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub
    Private Sub ConfiguraByTipoDoc()
        'IDSEDETextBox.Enabled = False
        btmBuscaDoc.Enabled = False
        MOV_MOVIMIENTODETALLEDataGridView.Columns("IDPRODDESTINO").Visible = False
        MOV_MOVIMIENTODETALLEDataGridView.Columns("IDPREPACK").Visible = True
        NOFACCOMCELTextBox.Visible = False
        Select Case iTipoDoc.DocEs
            Case eTipoMovimi.Entrada
                NOFACCOMCELTextBox.Visible = True
                btnBuscaBodOri.Enabled = False
                IDBODEGAORIGENTextBox.Enabled = False
                btnBuscaBodDes.Enabled = True
                IDBODEGADESTINOTextBox.Enabled = True
                MOV_MOVIMIENTODETALLEDataGridView.Columns("IDPREPACK").Visible = False
            Case eTipoMovimi.Salida
                btnBuscaBodDes.Enabled = False
                IDBODEGADESTINOTextBox.Enabled = False
                btnBuscaBodOri.Enabled = True
                IDBODEGAORIGENTextBox.Enabled = True
            Case eTipoMovimi.Traslado
                btnBuscaBodDes.Enabled = True
                IDBODEGADESTINOTextBox.Enabled = True
                btnBuscaBodOri.Enabled = True
                IDBODEGAORIGENTextBox.Enabled = True
            Case eTipoMovimi.TrasladoCodigo
                btnBuscaBodDes.Enabled = True
                IDBODEGADESTINOTextBox.Enabled = True
                btnBuscaBodOri.Enabled = True
                IDBODEGAORIGENTextBox.Enabled = True
                MOV_MOVIMIENTODETALLEDataGridView.Columns("IDPRODDESTINO").Visible = True
        End Select
    End Sub
    Private Sub ActualizaDatosDoc()
        Try
            IDBODEGADESTINOTextBox.Text = iTipoDoc.BodegaPara
            IDBODEGAORIGENTextBox.Text = iTipoDoc.BodegaDe
            IDCCOSTOTextBox.Text = iTipoDoc.idCcosto
            IDLISTATextBox.Text = iTipoDoc.idLista
            IDSEDETextBox.Text = iTipoDoc.idSede
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub

    Private Sub btmBuscaDoc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btmBuscaDoc.Click
        Try
            Dim fLDoc As New fListaTipoDocs
            fLDoc.SubClase = "INV"
            If fLDoc.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDDOCUMENTOTextBox.Text = fLDoc.idTipoDoc
                CargaTipoDoc(fLDoc.idTipoDoc)
                ConfiguraByTipoDoc()
                ActualizaDatosDoc()
                TotalizaDoc()
                'SalvaCambios(False)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub

    Private Sub btnBuscasede_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscasede.Click
        Try
            Dim fLS As New fListaSedes
            If fLS.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDSEDETextBox.Text = fLS.Sede
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub
    Private Sub IniMovimientoInventarios()
        Try
            IDDOCUMENTOTextBox.Enabled = True
            NUMEROTextBox.Enabled = True
            lbGlobalcom.cGeneral.ActivaControles(Me.Controls, True)
            lbGlobalcom.cGeneral.bloquearDocumento(Me.Controls, True)
            If DsMovimiento.MOV_MOVIMIENTO.GetChanges IsNot Nothing Or DsMovimiento.MOV_MOVIMIENTODETALLE.GetChanges IsNot Nothing Or DsMovimiento.MOV_DESCRIPCIONDET.GetChanges IsNot Nothing Then
                If MessageBox.Show("Hay cambios pendientes por salvar, desea salvarlos", "Cambios pendientes", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                    SalvaCambios(True)
                End If
            End If
            MOV_MOVIMIENTOBindingSource.CancelEdit()
            DsMovimiento.MOV_DESCRIPCIONDET.Rows.Clear()
            DsMovimiento.MOV_MOVIMIENTODETALLE.Rows.Clear()
            DsMovimiento.MOV_MOVIMIENTO.Rows.Clear()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub BindingNavigatorAddNewItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BindingNavigatorAddNewItem.Click
        Try
            IniMovimientoInventarios()
            MOV_MOVIMIENTOBindingSource.AddNew()
            TotalizaDoc()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.CellBeginEdit
        Try
            MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("LINEA").Value = cGeneral.GetNumeroLinea(MOV_MOVIMIENTODETALLEDataGridView, e.RowIndex)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub ActualizaDatosProd(ByVal Fila As Integer)
        Try
            If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow IsNot Nothing Then
                MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("IDIVA").Value = cDetLis.iProducto.IdTipoIva
                MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("VALORBASE").Value = cDetLis.PrecioConDto
                MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("VALORIVA").Value = cDetLis.PrecioConDto * cDetLis.iProducto.iTipoIva.PorIva
                MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("IDTIPOLISTA").Value = cListaP.tipoLista
                MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("NUMEROLINEAPADRE").Value = 0
            Else
                stMovimi.Text = ""
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_CellMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.CellMouseDoubleClick
        Select Case MOV_MOVIMIENTODETALLEDataGridView.Columns(e.ColumnIndex).Name
            Case "IDPRODUCTO"
                If IDDOCUMENTOTextBox.Text.Length > 0 And NUMEROTextBox.Text.Length > 0 Then
                    If MOV_MOVIMIENTODETALLEDataGridView.CurrentCellAddress.X = 3 Then
                        Dim fLProd As New fListaProductos
                        MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("LINEA").Value = cGeneral.GetNumeroLinea(MOV_MOVIMIENTODETALLEDataGridView, e.RowIndex)
                        fLProd.ListaPrecios = IDLISTATextBox.Text
                        If fLProd.ShowDialog = Windows.Forms.DialogResult.OK Then
                            MOV_MOVIMIENTODETALLEDataGridView.BeginEdit(True)
                            MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells(3).Value = fLProd.idArticulo
                            MOV_MOVIMIENTODETALLEBindingSource.EndEdit()
                            cDetLis = cListaP.DetalleLista(fLProd.idArticulo)
                            ActualizaDatosProd(MOV_MOVIMIENTODETALLEDataGridView.CurrentCellAddress.Y)
                            stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido
                        End If
                    End If
                End If
        End Select
    End Sub
    Private Sub CalculaVrLinea()
        Dim PBaseConDto As Double = MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("VALORBASE").Value * (1 - MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("DESCUENTO1").Value) * (1 - MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("DESCUENTO2").Value)
        cDetLis = New cDetalleListaPrecios(IDLISTATextBox.Text, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value)
        Dim IvaConDto As Double = PBaseConDto * cDetLis.iProducto.iTipoIva.PorIva
        MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("VALORIVA").Value = IvaConDto
    End Sub
    Private Sub MOV_MOVIMIENTODETALLEDataGridView_CellValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.CellValidated
        Try
            If MOV_MOVIMIENTODETALLEDataGridView.IsCurrentCellInEditMode Then
                Select Case MOV_MOVIMIENTODETALLEDataGridView.Columns(e.ColumnIndex).Name
                    Case "IDPRODUCTO"
                        If iTipoDoc.DocEs <> eTipoMovimi.Venta Then
                            ActualizaDatosProd(e.RowIndex)
                        End If
                        If iTipoDoc.DocEs = eTipoMovimi.TrasladoCodigo Then
                            MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODDESTINO").Value = cDetLis.iProducto.IdProdConvierte
                        End If
                        If iTipoDoc.DocEs = eTipoMovimi.Salida Or iTipoDoc.DocEs = eTipoMovimi.Traslado Or iTipoDoc.DocEs = eTipoMovimi.TrasladoCodigo Then
                            Dim cDescDtalle As cCargarDescripcionDtalle = New cCargarDescripcionDtalle(DsMovimiento, IDBODEGAORIGENTextBox.Text, IDDOCUMENTOTextBox.Text, MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells(2).Value, NUMEROTextBox.Text, MOV_MOVIMIENTODETALLEBindingSource.Position)
                            cDescDtalle.cargaDescripcionDtalle()
                        End If
                        MOV_DESCRIPCIONDETALLEBindingSource.EndEdit()
                        SalvaCambios(False)
                    Case "CANTIDAD"
                        If iTipoDoc.DocEs = eTipoMovimi.Salida Or iTipoDoc.DocEs = eTipoMovimi.Traslado Or iTipoDoc.DocEs = eTipoMovimi.TrasladoCodigo Then
                            MOV_MOVIMIENTODETALLEBindingSource.EndEdit()
                            If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("CANTIDAD").Value <> 0 AndAlso lIdPrepackSel >= 0 Then _
                                GetDetalleInventario(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("CANTIDAD").Value - CantOld, e.RowIndex)
                        End If
                        CantOld = 0
                        MOV_DESCRIPCIONDETALLEBindingSource.EndEdit()
                        SalvaCambios(False)
                    Case "DESCUENTO1"
                        MOV_MOVIMIENTODETALLEBindingSource.EndEdit()
                        SalvaCambios(False)
                    Case "DESCUENTO2"
                        MOV_MOVIMIENTODETALLEBindingSource.EndEdit()
                        SalvaCambios(False)
                    Case "VALORBASE"
                        MOV_MOVIMIENTODETALLEBindingSource.EndEdit()
                        CalculaVrLinea()
                        SalvaCambios(False)
                End Select
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try

    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.CellValidating
        Try
            If MOV_MOVIMIENTODETALLEDataGridView.IsCurrentCellInEditMode AndAlso e.FormattedValue IsNot Nothing AndAlso e.FormattedValue <> "" Then
                Select Case MOV_MOVIMIENTODETALLEDataGridView.Columns(e.ColumnIndex).Name
                    Case "IDPRODUCTO"
                        Dim iProd As New cProducto(e.FormattedValue)
                        If iTipoDoc.DocEs = eTipoMovimi.TrasladoCodigo Then
                            If iProd.IdProdConvierte Is DBNull.Value Or cGeneral.NToCad(iProd.IdProdConvierte).Trim.Length = 0 Then
                                MessageBox.Show("Este producto no es permitido para hacer traslado de codigo", "Traslado de Codigo", MessageBoxButtons.OK)
                                e.Cancel = True
                            End If
                        End If
                    Case "IDPREPACK"
                        ActualizaExistencias(e.RowIndex)
                    Case "CANTIDAD"
                        If iTipoDoc.DocEs = eTipoMovimi.Salida Or iTipoDoc.DocEs = eTipoMovimi.Traslado Or iTipoDoc.DocEs = eTipoMovimi.TrasladoCodigo Then
                            Dim iInv As cInventarios = New cInventarios(DsMovimiento, CustomPrincipal.Periodo.IDPERIODO, IDBODEGAORIGENTextBox.Text, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value, MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("LINEA").Value, "0", MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPREPACK").Value)
                            Dim drMov As dsMovimiento.MOV_MOVIMIENTODETALLERow
                            If DsMovimiento.MOV_MOVIMIENTODETALLE.Rows.Count - 1 < MOV_MOVIMIENTODETALLEBindingSource.Position Then
                                drMov = Nothing
                            Else
                                drMov = DsMovimiento.MOV_MOVIMIENTODETALLE.Rows(MOV_MOVIMIENTODETALLEBindingSource.Position)
                            End If
                            If Not iInv.HayExistencias(drMov, CInt(e.FormattedValue)) Then
                                MessageBox.Show("Existencias insuficientes cantidad actual " & iInv.ExistenciaNeta.ToString, "Existencias", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                                If iTipoDoc.existenciasNegativas.ToUpper = "N" Then
                                    e.Cancel = True
                                End If
                            End If

                            Dim cMovi As cMovimiento = New cMovimiento(DsMovimiento, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("LINEA").Value)
                            Dim cantidadRegDescrDetalle As Integer = cMovi.cantidadPrepackCargados()
                            If cantidadRegDescrDetalle > e.FormattedValue Then
                                MessageBox.Show("La cantidad es menor a los registros Chequeados,se debe borrar los registros", "chequeado", MessageBoxButtons.OK)
                                e.Cancel = True
                            End If
                            CantOld = iInv.CantidadOri
                        End If
                End Select
            End If
        Catch ex As Exception
            stMovimi.Text = ""
            e.Cancel = True
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.DataError
        MessageBox.Show(e.Exception.Message)
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.EditingControlShowing
        If TypeOf e.Control Is ComboBox Then
            If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value IsNot DBNull.Value Then
                AddHandler CType(e.Control, ComboBox).SelectedIndexChanged, AddressOf comboBox_selctedindexchanged
            Else
                MessageBox.Show("Debe seleccionar Un Producto", "ValidaProducto", MessageBoxButtons.OK)
            End If
        End If
    End Sub
    Private Sub comboBox_selctedindexchanged(ByVal sender As Object, ByVal e As EventArgs)
        Dim CB As ComboBox = CType(sender, ComboBox)
        If CB.ValueMember = "IDPREPACK" AndAlso CB.SelectedValue IsNot Nothing Then _
            lIdPrepackSel = CB.SelectedValue
    End Sub
    
    Private Sub MOV_MOVIMIENTODETALLEDataGridView_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.GotFocus
        Dim cVal As New cValidaciones(DsMovimiento)
        Try
            If IDDOCUMENTOTextBox.Text.Length > 0 And NUMEROTextBox.Text.Length > 0 Then
                MOV_MOVIMIENTOBindingSource.EndEdit()
                mensajeValidacion = cVal.ValidaMovimiento(iTipoDoc.DocEs)
                If mensajeValidacion <> "" Then
                    IDSEDETextBox.Focus()
                    MessageBox.Show(mensajeValidacion, "validaciones", MessageBoxButtons.OK)
                Else
                    If DsMovimiento.MOV_MOVIMIENTO.Rows(MOV_MOVIMIENTOBindingSource.Position).RowState = DataRowState.Added Then
                        NUMEROTextBox.Text = lbGlobalcom.Consec.GetNumeroActual(IDDOCUMENTOTextBox.Text, iTipoDoc.DocEs)
                        SalvaCambios(False)
                    End If
                End If
            Else
                IDSEDETextBox.Focus()
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try

    End Sub

    Private Sub IDLISTATextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles IDLISTATextBox.TextChanged
        Try
            If IDLISTATextBox.Text.Trim.Length > 0 Then _
                cListaP = New cEncaListaPrecios(IDLISTATextBox.Text)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.KeyDown
        Try
            If e.Control Then
                Select Case e.KeyCode
                    Case Keys.B
                        MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("LINEA").Value = cGeneral.GetNumeroLinea(MOV_MOVIMIENTODETALLEDataGridView, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index)
                        Dim ColActual As Int16 = MOV_MOVIMIENTODETALLEDataGridView.CurrentCellAddress.X
                        If ColActual = 3 Or ColActual = 6 Then
                            Dim fLProd As New fListaProductos
                            fLProd.ListaPrecios = IDLISTATextBox.Text
                            If fLProd.ShowDialog = Windows.Forms.DialogResult.OK Then
                                MOV_MOVIMIENTODETALLEDataGridView.BeginEdit(True)
                                MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells(ColActual).Value = fLProd.idArticulo
                                MOV_MOVIMIENTODETALLEBindingSource.EndEdit()
                                cDetLis = cListaP.DetalleLista(fLProd.idArticulo)
                                ActualizaDatosProd(MOV_MOVIMIENTODETALLEDataGridView.CurrentCellAddress.Y)
                                stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido
                            End If
                        End If
                End Select
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try

    End Sub

    Private Sub ActualizaExistencias(ByVal Fila As Integer)
        Try
            cDetLis = cListaP.DetalleLista(MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells(3).Value)
            Dim iInv As cInventarios = New cInventarios(DsMovimiento, CustomPrincipal.Periodo.IDPERIODO, IDBODEGAORIGENTextBox.Text, MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("IDPRODUCTO").Value, MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("LINEA").Value, "0", lIdPrepackSel)
            If iInv Is Nothing Then
                stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido
            Else
                stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido & " EXISTENCIAS : " & iInv.ExistenciaNeta
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
        
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_RowEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.RowEnter
        Try
            If e.RowIndex >= 0 AndAlso MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells(3).Value IsNot Nothing AndAlso MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells(1).Value IsNot DBNull.Value Then
                ActualizaExistencias(e.RowIndex)
                txtCantidad.Text = cDetLis.iProducto.CantidadSubProd * MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells(7).Value
                TotalizaDoc()
                txtCont.Text = cDetLis.iProducto.CantidadSubProd
                InicializaConsec()
                ValidarRegsitroDescDetalle(e.RowIndex, MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells(7).Value)
            Else
                stMovimi.Text = ""
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try

    End Sub
    Private Sub SalvaCambios(ByVal Msj As Boolean)
        Dim Conn As Oracle.DataAccess.Client.OracleConnection
        Dim tran As Oracle.DataAccess.Client.OracleTransaction
        Try
            Conn = New Oracle.DataAccess.Client.OracleConnection(My.Settings.ConnectionString)
            Conn.Open()
            tran = Conn.BeginTransaction

            IDDOCUMENTOTextBox.Enabled = False
            NUMEROTextBox.Enabled = False
            btmBuscaDoc.Enabled = False
            If Msj Then _
                Validate()
            MOV_MOVIMIENTOBindingSource.EndEdit()
            MOV_MOVIMIENTODETALLEBindingSource.EndEdit()
            MOV_DESCRIPCIONDETALLEBindingSource.EndEdit()
            Dim AfecInv As New cAfectaIventarios(DsMovimiento, iTipoDoc, CustomPrincipal.Periodo, False, "N", Conn)
            AfecInv.AfectaInventarios()
            AfecInv = Nothing
            Dim SalvaMov As cSalvaMovimiento
            If lEliminaDoc Then
                SalvaMov = New cSalvaMovimiento(Conn, DsMovimiento.MOV_MOVIMIENTO.GetChanges, DsMovimiento.MOV_MOVIMIENTODETALLE.GetChanges, DsMovimiento.MOV_DESCRIPCIONDET.GetChanges, 0)
            Else
                SalvaMov = New cSalvaMovimiento(Conn, DsMovimiento.MOV_MOVIMIENTO.GetChanges, DsMovimiento.MOV_MOVIMIENTODETALLE.GetChanges, DsMovimiento.MOV_DESCRIPCIONDET.GetChanges, 1)
            End If
            DsMovimiento.AcceptChanges()
            SalvaMov = Nothing
            tran.Commit()
            Conn.Close()
            If iTipoDoc.TipoDocGenera IsNot DBNull.Value AndAlso iTipoDoc.TipoDocGenera.Trim.Length > 0 Then
                Dim DocGen As cGeneraDocumentoAutomatico = New cGeneraDocumentoAutomatico(iTipoDoc.TipoDocGenera, DsMovimiento)
                DocGen = Nothing
            End If
            If iTipoDoc.idMacro.Trim.Length > 0 Then
                Dim ProMacro As cProcesaMacro = New cProcesaMacro(iTipoDoc.idMacro, DsMovimiento)
                ProMacro = Nothing
            End If
            'If iTipoDoc.DocEs = eTipoMovimi.TrasladoCodigo Then
            '    Dim mPPack As cMuevePrepack = New cMuevePrepack(DsMovimiento)
            '    mPPack = Nothing
            'End If
            If Msj Then _
                MessageBox.Show("Se salvarón cambios con exito", "Salvar Cambios", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Catch ex As Exception
            tran.Rollback()
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub
    Private Sub MOV_MOVIMIENTOBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MOV_MOVIMIENTOBindingNavigatorSaveItem.Click
        Try
            Dim cVal As New cValidaciones(DsMovimiento)
            MOV_MOVIMIENTOBindingSource.EndEdit()
            mensajeValidacion = cVal.ValidaMovimiento(iTipoDoc.DocEs)
            If mensajeValidacion = "" Then
                SalvaCambios(True)
            Else
                MessageBox.Show(mensajeValidacion, "validaciones", MessageBoxButtons.OK)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub

    Private Sub btnBuscaOrdenCompra_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaOrdenCompra.Click
        lbGlobalcom.cGeneral.ActivaControles(Me.Controls, True)
        IniMovimientoInventarios()
        cCom = New lbGlobalcom.cCompra(Me.DsMovimiento)
        Try
            Dim fOrdCom As New fListaOrdenCompra
            If fOrdCom.ShowDialog = Windows.Forms.DialogResult.OK Then
                cCom.cargarCompra(fOrdCom.Ptipodoc, fOrdCom.Pnumero)
                ConfiguraByTipoDoc()
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub

    Private Sub btnBuscaMovimi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaCompra.Click
        Try
            Dim cmov As New cMovimiento(DsMovimiento)
            Dim fListaMov As New fListaMovimi
            fListaMov.SubClase = "INV"
            If fListaMov.ShowDialog = Windows.Forms.DialogResult.OK Then
                If DsMovimiento.MOV_DESCRIPCIONDET.GetChanges IsNot Nothing Or DsMovimiento.MOV_MOVIMIENTODETALLE.GetChanges IsNot Nothing Or DsMovimiento.MOV_MOVIMIENTO.GetChanges IsNot Nothing Then
                    If MessageBox.Show("Hay cambios pendientes por salvar, desae salvarlos", "Cambios Pendientes", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                        SalvaCambios(False)
                    End If
                End If
                DsMovimiento.MOV_DESCRIPCIONDET.Rows.Clear()
                DsMovimiento.MOV_MOVIMIENTODETALLE.Rows.Clear()
                DsMovimiento.MOV_MOVIMIENTO.Rows.Clear()
                daMovimi.FillByIdDocumentoNumero(DsMovimiento.MOV_MOVIMIENTO, fListaMov.mTipoDoc, fListaMov.mNumeroDoc)
                daMovimiDetalle.FillByIdDocumentoNumero(DsMovimiento.MOV_MOVIMIENTODETALLE, fListaMov.mTipoDoc, fListaMov.mNumeroDoc)
                daMovimiDetDescri.FillByIdDocumentoNumero(DsMovimiento.MOV_DESCRIPCIONDET, fListaMov.mTipoDoc, fListaMov.mNumeroDoc)
                If CustomPrincipal.IsInRole("ADMINGC") = False And cmov.buscarCerrado(IDDOCUMENTOTextBox.Text, NUMEROTextBox.Text) = "S" Then
                    lbGlobalcom.cGeneral.bloquearDocumento(Me.Controls, False)
                Else
                    lbGlobalcom.cGeneral.ActivaControles(Me.Controls, True)
                End If
                TotalizaDoc()
                IDDOCUMENTOTextBox.Enabled = False
                NUMEROTextBox.Enabled = False
                IDSEDETextBox.Enabled = False
                InicializaConsec()
                If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow IsNot Nothing Then _
                    ValidarRegsitroDescDetalle(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("CANTIDAD").Value)
                ConfiguraByTipoDoc()
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub

    Private Sub BindingNavigatorDeleteItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BindingNavigatorDeleteItem.Click
        Try
            If MessageBox.Show("Esta seguro que desea eliminar este documento", "Elimina Documento", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                If iTipoDoc.DocEs = eTipoMovimi.Entrada Then _
                    cGeneral.EliminaPrepackInv(DsMovimiento.MOV_MOVIMIENTO.Rows(0))
                MOV_MOVIMIENTOBindingSource.RemoveCurrent()
                lEliminaDoc = True
                SalvaCambios(False)
                MessageBox.Show("Se elimino documento con exito", "Elimino Documento", MessageBoxButtons.OK, MessageBoxIcon.Information)
                lbGlobalcom.cGeneral.ActivaControles(Me.Controls, False)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub


    Private Sub IDBODEGAORIGENTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles IDBODEGAORIGENTextBox.TextChanged
        Try
            If IDBODEGAORIGENTextBox.Text.Trim.Length > 0 Then _
                iBodOri = New cBodegas(IDBODEGAORIGENTextBox.Text)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub

    Private Sub IDBODEGADESTINOTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles IDBODEGADESTINOTextBox.TextChanged
        Try
            If IDBODEGADESTINOTextBox.Text.Trim.Length > 0 Then _
                iBodDes = New cBodegas(IDBODEGADESTINOTextBox.Text)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try
    End Sub

    Private Sub IDDOCUMENTOTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles IDDOCUMENTOTextBox.TextChanged
        Try
            If IDDOCUMENTOTextBox.Text.Trim.Length > 0 Then _
                iTipoDoc = New cTipoDocumento(IDDOCUMENTOTextBox.Text)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
        End Try

    End Sub

    Private Sub TotalizaDoc()
        'Dim TotalBase As Double = 0
        'Dim TotalIva As Double = 0
        'Dim Totaldoc As Double = 0
        'For Each drDetMov As dsMovimiento.MOV_MOVIMIENTODETALLERow In DsMovimiento.MOV_MOVIMIENTODETALLE.Rows
        '    If drDetMov.RowState <> DataRowState.Deleted Then
        '        TotalBase += drDetMov.VALORBASE * drDetMov.CANTIDAD
        '        TotalIva += drDetMov.VALORIVA * drDetMov.CANTIDAD
        '        Totaldoc += drDetMov.VALORLINEA
        '    End If
        'Next
        'Me.TXTTOTALBASE.Text = TotalBase.ToString("c2")
        'Me.TXTTOTALIVA.Text = TotalIva.ToString("C2")
        'Me.TXTTOTALDOC.Text = Totaldoc.ToString("C2")
        Me.TXTTOTALDOC.Text = (CDbl(TXTTOTALBASE.Text) + CDbl(TXTTOTALIVA.Text)).ToString("C2")
    End Sub

    Private Sub MOV_DESCRIPCIONDETALLEDataGridView_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs)
        e.Cancel = True
        MessageBox.Show(e.Exception.Message)
        lbGlobalcom.cError.SalvaError(e.Exception, "Samuel")
    End Sub

    Private Sub InicializaConsec()
        Dim NFilas As Integer = MOV_DESCRIPCIONDETDataGridView1.RowCount
        txtIngres.Text = NFilas
        If NFilas = 0 Then
            txtConsec.Text = 0
        ElseIf NFilas <= cDetLis.iProducto.CantidadSubProd Then
            txtConsec.Text = NFilas
        Else
            Dim FilaActual As Integer = NFilas - 1
            Dim Salir = False
            Dim NregCosecIguales As Integer = 0
            Dim nConsec As Integer = MOV_DESCRIPCIONDETDataGridView1.Rows(FilaActual).Cells("NUMEROPRODUCTO1").Value
            While Not Salir
                If MOV_DESCRIPCIONDETDataGridView1.Rows(FilaActual).Cells("NUMEROPRODUCTO1").Value <> nConsec Or NregCosecIguales = cDetLis.iProducto.CantidadSubProd Then
                    Salir = True
                Else
                    FilaActual -= 1
                    NregCosecIguales += 1
                End If
            End While
            txtConsec.Text = NregCosecIguales
        End If
    End Sub
    Private Function GetConsecActual() As Integer
        If MOV_DESCRIPCIONDETDataGridView1.RowCount = 0 Then
            Return 1
        Else
            Return MOV_DESCRIPCIONDETDataGridView1.Rows(MOV_DESCRIPCIONDETDataGridView1.RowCount - 1).Cells("NUMEROPRODUCTO1").Value
        End If
    End Function
    Private Sub ValidarRegsitroDescDetalle(ByVal Fila As Integer, ByVal Cantidad As Integer)
        Dim NFilas As Integer = MOV_DESCRIPCIONDETDataGridView1.RowCount
        If Not MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).IsNewRow Then
            If cDetLis.iProducto.CantidadSubProd * Cantidad > NFilas Then
                txtNumeroReg.Enabled = True
                btnBuscarPrepack.Enabled = True
            Else
                txtNumeroReg.Enabled = False
                btnBuscarPrepack.Enabled = False
            End If
        End If
    End Sub

    Private Function validaImeiIccid(ByVal numeroRegistro As String) As Integer
        Dim existe As Integer = 0
        Try
            For Each drDes As dsMovimiento.MOV_DESCRIPCIONDETRow In DsMovimiento.MOV_DESCRIPCIONDET.Rows
                If drDes("NUMEROREGISTRO") = numeroRegistro Then
                    existe = 1
                End If
            Next
            Return existe
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Function


    Private Sub btnEliminaDescDet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminaDescDet.Click
        Try
            If MessageBox.Show("Esta seguro que desea eliminar el ultimo registro", "Elimina Registro", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                MOV_DESCRIPCIONDETALLEBindingSource.RemoveAt(DsMovimiento.MOV_DESCRIPCIONDET.Rows.Count - 1)
                SalvaCambios(False)
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try

    End Sub

    Private Sub RenumerarNumeroProducto()
        Try
            Dim contenido As Integer = 1
            Dim fila As Integer = 1
            For Each drDescDet As dsMovimiento.MOV_DESCRIPCIONDETRow In DsMovimiento.MOV_DESCRIPCIONDET.Rows
                If contenido > CType(txtCont.Text, Integer) Then
                    contenido = 1
                    fila += 1
                End If
                contenido += 1
                drDescDet("NUMEROPRODUCTO") = fila
            Next
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub tpDetalle_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles tpDetalle1.Enter
        Try
            If iTipoDoc.DocEs = eTipoMovimi.Salida Or iTipoDoc.DocEs = eTipoMovimi.Traslado Then
                txtNumeroReg.ReadOnly = True
                btnBuscarPrepack.Enabled = True
            Else
                txtNumeroReg.ReadOnly = False
                btnBuscarPrepack.Enabled = False
            End If
            If iTipoDoc.DocEs = eTipoMovimi.Entrada Then
                gbAdminPrepack.Enabled = True
                gbDatosPrepack.Enabled = True
            Else
                gbAdminPrepack.Enabled = False
                gbDatosPrepack.Enabled = False
            End If
            InicializaConsec()
            If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow IsNot Nothing Then _
                ValidarRegsitroDescDetalle(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("CANTIDAD").Value)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub GetDetalleInventario(ByVal idProd As String, ByVal Cant As Integer, ByVal Fila As Integer)
        Try
            Dim bDetInv As cBuscaDetalleInvYPrepacks = New cBuscaDetalleInvYPrepacks(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPREPACK").Value, IDBODEGAORIGENTextBox.Text, idProd, "S", Cant, iTipoDoc, ckGeneraDetalleAutomatico.Checked)
            bDetInv.InsertaDatos(DsMovimiento, Fila, IDLISTATextBox.Text, Cant)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub



    Private Function GetRegistrosAsociados(ByVal IdProducto As String, ByVal ItemProd As Integer) As dsMovimiento.MOV_DESCRIPCIONDETRow()
        Return DsMovimiento.MOV_MOVIMIENTODETALLE.Rows.Find(New Object() {IDDOCUMENTOTextBox.Text, NUMEROTextBox.Text, ItemProd}).GetChildRows("FK_MOV_MOVIMIENTODETALLE_MOV_DESCRIPCIONDET")
    End Function

    Private Sub txtNumeroReg_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNumeroReg.Validated
        SalvaCambios(False)
    End Sub

    Private Sub txtNumeroReg_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtNumeroReg.Validating
        Try
            If txtNumeroReg.Text.Length > 0 Then
                If validaImeiIccid(txtNumeroReg.Text) = 0 Then
                    If daInv.GetImeiIccidValido(txtNumeroReg.Text) = 0 Then
                        Dim conseAsigna As Integer = GetConsecActual()
                        If txtConsec.Text = txtCont.Text Then
                            conseAsigna += 1
                            txtConsec.Text = 1
                        Else
                            txtConsec.Text += 1
                        End If
                        Dim drMovDetalle As dsMovimiento.MOV_MOVIMIENTODETALLERow = DsMovimiento.MOV_MOVIMIENTODETALLE.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index)
                        Dim drDescDet As dsMovimiento.MOV_DESCRIPCIONDETRow = DsMovimiento.MOV_DESCRIPCIONDET.NewMOV_DESCRIPCIONDETRow
                        drDescDet.SetParentRow(drMovDetalle, DsMovimiento.Relations("FK_MOV_MOVIMIENTODETALLE_MOV_DESCRIPCIONDET"))
                        drDescDet.NUMEROPRODUCTO = conseAsigna
                        drDescDet.TIPOSUBPROD = cDetLis.iProducto.TipoSubProd
                        drDescDet.NUMEROREGISTRO = txtNumeroReg.Text
                        drDescDet.COSTO = drMovDetalle.VALORBASE * (1 - drMovDetalle.DESCUENTO1) * (1 - drMovDetalle.DESCUENTO2)
                        DsMovimiento.MOV_DESCRIPCIONDET.Rows.Add(drDescDet)
                        drDescDet = Nothing
                        drMovDetalle = Nothing
                        txtIngres.Text = MOV_DESCRIPCIONDETDataGridView1.RowCount
                    Else
                        MessageBox.Show("El Numero de registro ya se ha en Inventario", "Inventario", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                        e.Cancel = True
                    End If
                Else
                    MessageBox.Show("El Numero de registro ya se ha ingresado", "NumeroRegistro", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    e.Cancel = True
                End If
                txtNumeroReg.Text = ""
                txtNumeroReg.Focus()
            End If
            ValidarRegsitroDescDetalle(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("CANTIDAD").Value)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Function eliminarRegistrosDescDetalle(ByVal idProd As String, ByVal tipoSubProd As Integer, ByVal numReg As String) As Boolean
        Try
            Dim dt As New dsInvenConsultas.INV_GETPREPACKDataTable
            Dim cGetDatos As GetDatosPrepack = New GetDatosPrepack(idProd, tipoSubProd, numReg)
            dt = cGetDatos.Prepack
            'Dim cant As Integer = 0
            'Dim numLinea As Integer
            If dt Is Nothing Then
                Return True
            Else
                For Each dr As dsInvenConsultas.INV_GETPREPACKRow In dt
                    For Each drDesc As dsMovimiento.MOV_DESCRIPCIONDETRow In DsMovimiento.MOV_DESCRIPCIONDET.Rows
                        If drDesc.RowState <> DataRowState.Deleted Then
                            If dr.TIPOSUBPRODH > 0 Then
                                If drDesc.NUMEROREGISTRO = dr.NUMEROREGISTROH And drDesc.TIPOSUBPROD = 2 Then
                                    'cant += 1
                                    'numLinea = drDesc.NUMEROLINEA
                                    drDesc.Delete()
                                    GoTo fin
                                End If
                            End If
                            If drDesc.NUMEROREGISTRO = dr.NUMEROREGISTROP And drDesc.TIPOSUBPROD = 1 Then
                                drDesc.Delete()
                                'Exit For
                            End If
fin:
                        End If
                    Next
                Next
                Return False
            End If
            'For Each drDeta As dsMovimiento.MOV_MOVIMIENTODETALLERow In DsMovimiento.MOV_MOVIMIENTODETALLE.Rows
            '    If drDeta.NUMEROLINEA = numLinea Then
            '        drDeta.CANTIDAD -= cant
            '        If drDeta.CANTIDAD = 0 Then
            '            drDeta.Delete()
            '        End If
            '        Exit For
            '    End If
            'Next
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Function


    Private Sub btnEliminaDesDet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminaDesDet.Click
        Try
            Dim Mensaje As String = ""
            Dim nReg As Integer = -1
            If iTipoDoc.DocEs = eTipoMovimi.Entrada Then
                Mensaje = "Esta seguro que desea eliminar el ultimo registro y el Preapack asociado"
                nReg = MOV_DESCRIPCIONDETDataGridView1.RowCount - 1
            Else
                Mensaje = "Esta seguro que desea eliminar el registro seleccionado"
                nReg = MOV_DESCRIPCIONDETDataGridView1.CurrentRow.Index
            End If
            If MessageBox.Show(Mensaje, "Elimina Registro", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                Dim cGetDatos As GetDatosPrepack = New GetDatosPrepack(MOV_DESCRIPCIONDETDataGridView1.Rows(nReg).Cells("IDPRODUCTO2").Value, MOV_DESCRIPCIONDETDataGridView1.Rows(nReg).Cells("TIPOSUBPROD1").Value, MOV_DESCRIPCIONDETDataGridView1.Rows(nReg).Cells("NUMEROREGISTRO1").Value)
                If iTipoDoc.DocEs = eTipoMovimi.Entrada And cGetDatos.EsPrepack Then
                    Dim iEliminaPPac As New cEliminaPrepaks(MOV_DESCRIPCIONDETDataGridView1.Rows(nReg).Cells("TIPOSUBPROD1").Value, MOV_DESCRIPCIONDETDataGridView1.Rows(nReg).Cells("NUMEROREGISTRO1").Value, cGetDatos.PPackEsPadre)
                    iEliminaPPac = Nothing
                End If
                If CType(txtCont.Text, Integer) >= 1 And (iTipoDoc.DocEs = eTipoMovimi.Salida Or iTipoDoc.DocEs = eTipoMovimi.Traslado Or iTipoDoc.DocEs = eTipoMovimi.TrasladoCodigo) And cGetDatos.EsPrepack Then
                    eliminarRegistrosDescDetalle(MOV_DESCRIPCIONDETDataGridView1.Rows(nReg).Cells("IDPRODUCTO2").Value, MOV_DESCRIPCIONDETDataGridView1.Rows(nReg).Cells("TIPOSUBPROD1").Value, MOV_DESCRIPCIONDETDataGridView1.Rows(nReg).Cells("NUMEROREGISTRO1").Value)
                Else
                    MOV_DESCRIPCIONDETBindingSource.RemoveAt(nReg)
                End If
                SalvaCambios(False)
                InicializaConsec()
                ValidarRegsitroDescDetalle(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("CANTIDAD").Value)

            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Function validarNumeroRegP(ByVal numReg As String) As Integer
        Try
            For Each drMov As dsMovimiento.MOV_DESCRIPCIONDETRow In DsMovimiento.MOV_DESCRIPCIONDET.Rows
                If drMov.NUMEROREGISTRO = numReg Then
                    Return 1
                End If
            Next
            Return 0
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try

    End Function

    Private Sub btnBuscarPrepack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscarPrepack.Click
        Try

            If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow IsNot Nothing AndAlso (MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPREPACK").Value > 0 And MOV_MOVIMIENTODETALLEDataGridView.Rows.Count > 0) Then
                Dim flPrep As New fListaPrepack
                flPrep.mIdPrepack = MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPREPACK").Value
                flPrep.ProductoPadre = MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value
                flPrep.mBodega = IDBODEGAORIGENTextBox.Text
                flPrep.EsLista = True
                If flPrep.ShowDialog = Windows.Forms.DialogResult.OK Then
                    For Each dPPackSel As cPrepacksSelect In flPrep.ListaPPack
                        If validarNumeroRegP(dPPackSel.NumeroRegP) = 0 Then
                            Dim cCargaDtalle As cCargaDetalleInvPrepacks = New cCargaDetalleInvPrepacks(dPPackSel.IdPrepack, dPPackSel.Producto, dPPackSel.Consecutivo, dPPackSel.TipoPreapck, flPrep.mBodega)
                            cCargaDtalle.InsertaDatos(DsMovimiento, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, IDLISTATextBox.Text)
                            InicializaConsec()
                            ValidarRegsitroDescDetalle(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("CANTIDAD").Value)
                            SalvaCambios(False)
                        Else
                            MessageBox.Show("El Numero de registro ya se ha ingresado", "NumeroRegistro", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                        End If
                    Next

                End If
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try

    End Sub

   
    Private Sub btnCerrarDoc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCerrarDoc.Click
        Dim cmov As New cMovimiento(DsMovimiento)
        Try
            If cmov.cerrarDocumento() Then
                MessageBox.Show("Documento cerrado con exito", "Cerrado", MessageBoxButtons.OK, MessageBoxIcon.Information)
                If CustomPrincipal.IsInRole("ADMINGC") = False And cmov.buscarCerrado(IDDOCUMENTOTextBox.Text, NUMEROTextBox.Text) = "S" Then
                    lbGlobalcom.cGeneral.bloquearDocumento(Me.Controls, False)
                End If
            Else
                MessageBox.Show("No se puede cerrar el documento, No esta completo", "NoCerrado", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If

        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_UserDeletedRow(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.UserDeletedRow
        Try
            lEliminaDoc = True
            SalvaCambios(False)
            MessageBox.Show("Registro borrado con exito", "Elimina regsitro", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try

    End Sub


    Private Sub MOV_MOVIMIENTODETALLEDataGridView_UserDeletingRow(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowCancelEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.UserDeletingRow
        If MessageBox.Show("Desea borrar el registro", "Elimina registro", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.No Then
            e.Cancel = True
        End If
    End Sub


    Private Sub btnSelPadre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelPadre.Click
        Try
            Dim fLAP As New fListaParaArmarPrepacks
            fLAP.Datos = DsMovimiento.MOV_MOVIMIENTODETALLE
            If fLAP.ShowDialog = Windows.Forms.DialogResult.OK Then
                Dim cProd As cProducto = New cProducto(fLAP.CodigoProd)
                Dim cTipoPPack As TipoPrepack = New TipoPrepack(cbTipoPrepacks.SelectedValue)
                If cProd.CantidadSubProd <> cTipoPPack.CantidadIMEI Then
                    MessageBox.Show("El codigo del padre no es compatible con el prepack seleccionado", "Incompatibilidad", MessageBoxButtons.OK, MessageBoxIcon.Stop)
                    Exit Sub
                End If
                If cProd.EsPadre = "S" Then
                    txtCodigoPadre.Text = fLAP.CodigoProd
                    txtItemP.Text = fLAP.ItemProd
                Else
                    MessageBox.Show("Producto no esta calificado para ser padre, favor verifique e inetnete de nuevo", "No Padre", MessageBoxButtons.OK, MessageBoxIcon.Hand)
                End If
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnSelHijo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelHijo.Click
        Try
            Dim fLAP As New fListaParaArmarPrepacks
            fLAP.Datos = DsMovimiento.MOV_MOVIMIENTODETALLE
            If fLAP.ShowDialog = Windows.Forms.DialogResult.OK Then
                Dim cProd As cProducto = New cProducto(fLAP.CodigoProd)
                If cProd.EsPadre = "N" Then
                    txtCodigoHijo.Text = fLAP.CodigoProd
                    txtItemH.Text = fLAP.ItemProd
                Else
                    MessageBox.Show("Producto esta calificado para ser padre, y esta tratando de asociarlo como hijo, favor verifique e inetnete de nuevo", "Es Padre", MessageBoxButtons.OK, MessageBoxIcon.Hand)
                End If
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnEliminaPrepack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminaPrepack.Click
        Try
            If txtCodigoHijo.Text.Trim.Length <> 0 And txtCodigoPadre.Text.Trim.Length <> 0 Then
                Dim ePPackMov As New cEliminaPrepaks(GetRegistrosAsociados(txtCodigoPadre.Text, txtItemP.Text))
                MessageBox.Show("Se eliminarón " & ePPackMov.NumeroPreacksEliminados & ", con exito" & vbNewLine & "No se eliminarón " & ePPackMov.NumeroPrepakcsVendidos & ", por que ya fuerón venddidos " & vbNewLine & "Lista: " & ePPackMov.PreapksVendidos, "Elinados", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                MessageBox.Show("Debe de ingresar el codigo y la posición del padre y del hijo", "Falta Información", MessageBoxButtons.OK, MessageBoxIcon.Stop)
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnGeneraPrepack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGeneraPrepack.Click
        Try
            If txtCodigoHijo.Text.Trim.Length <> 0 And txtCodigoPadre.Text.Trim.Length <> 0 Then
                Dim gPPackMov As New GeneraPrepakDesdeMovimi(GetRegistrosAsociados(txtCodigoPadre.Text, txtItemP.Text), GetRegistrosAsociados(txtCodigoHijo.Text, txtItemH.Text), cbTipoPrepacks.SelectedValue)
                If Not gPPackMov.NumeroRegIguales Or Not gPPackMov.ParesIguales Then
                    If MessageBox.Show("No coinciden los registros en la cantidad o numero, desea continuar de todas maneras", "No coinciden", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                        gPPackMov.GeneraPrepacKsNoCoincidentes()
                        SalvaCambios(False)
                    End If
                Else
                    gPPackMov.GeneraPrepacksCoincidentes()
                    SalvaCambios(False)
                    MessageBox.Show("Se Generarón " & gPPackMov.NumeroPrepacksArmados.ToString & ", Prepacks con exito")
                End If

            Else
                MessageBox.Show("Debe de ingresar el codigo y la posición del padre y del hijo", "Falta Información", MessageBoxButtons.OK, MessageBoxIcon.Stop)
            End If

        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub MOV_DESCRIPCIONDETDataGridView1_RowEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles MOV_DESCRIPCIONDETDataGridView1.RowEnter
        If cDetLis.iProducto.ICCIDEnCompras = "S" Then _
            getDatosPrepack(e.RowIndex)
    End Sub

    Private Sub getDatosPrepack(ByVal Fila As Integer)
        Try
            If MOV_DESCRIPCIONDETDataGridView1.Rows(Fila) IsNot Nothing AndAlso Not MOV_DESCRIPCIONDETDataGridView1.Rows(Fila).IsNewRow Then
                Dim Prod As cProducto = New cProducto(MOV_DESCRIPCIONDETDataGridView1.Rows(Fila).Cells("IDPRODUCTO2").Value)
                If Prod.EsPadre = "S" Then
                    Dim TipoSubProd As Integer = MOV_DESCRIPCIONDETDataGridView1.Rows(Fila).Cells("TIPOSUBPROD1").Value
                    Dim NumeroRegistro As String = MOV_DESCRIPCIONDETDataGridView1.Rows(Fila).Cells("NUMEROREGISTRO1").Value
                    Dim PPack As cPrepack = New cPrepack(TipoSubProd, NumeroRegistro, True)
                    If PPack.EsPrepack Then
                        txtConsecPrepack.Text = PPack.ConsecPrepack
                        txtFechaEnsamblado.Text = PPack.FechaPrepack.ToString("dd/MM/yyyy")
                        txtEstadoPrepack.Text = PPack.Estado
                        txtCodigoP.Text = PPack.IdProductoP
                        txtTipoP.Text = cGeneral.GetNombreItemDatosTabla(PPack.TipoSubProdP, "sp")
                        txtNumeroRegP.Text = PPack.NumeroRegsitroP
                        txtCodigoH.Text = PPack.IdProductoH
                        txtTipoH.Text = cGeneral.GetNombreItemDatosTabla(PPack.TipoSubProdH, "sp")
                        txtNumeroRegH.Text = PPack.NumeroRegsitroH
                        Dim TipoPPack As TipoPrepack = New TipoPrepack(PPack.IdTipoPrepack)
                        txtTipoPrepack.Text = TipoPPack.Descripcion
                        TipoPPack = Nothing
                        PPack = Nothing
                    Else
                        LimpiaDatosPreapck()
                    End If
                Else
                    LimpiaDatosPreapck()
                End If
                Prod = Nothing
            Else
                LimpiaDatosPreapck()
            End If
        Catch ex As Exception
            If ex.Message.Trim <> "No existe prepack para este tiposubprod y numeroreg, verifique e intente de nuevo" Or ex.Message.Trim <> "No existe prepack para este tiposubprod y numeroreg, verifique e intente de nuevo" Then
                lbGlobalcom.cError.SalvaError(ex, "Samuel")
                MessageBox.Show(ex.Message)
            Else
                LimpiaDatosPreapck()
            End If
        End Try
    End Sub

    Private Sub LimpiaDatosPreapck()
        txtConsecPrepack.Text = ""
        txtFechaEnsamblado.Text = ""
        txtEstadoPrepack.Text = ""
        txtCodigoP.Text = ""
        txtTipoP.Text = ""
        txtNumeroRegP.Text = ""
        txtCodigoH.Text = ""
        txtTipoH.Text = ""
        txtNumeroRegH.Text = ""
    End Sub

    Private Sub btnEliminaMovDet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminaMovDet.Click
        Try
            If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow IsNot Nothing Then
                If MOV_DESCRIPCIONDETDataGridView1.RowCount = 0 Then
                    MOV_MOVIMIENTODETALLEBindingSource.RemoveCurrent()
                Else
                    For Each dr As dsMovimiento.MOV_DESCRIPCIONDETRow In DsMovimiento.MOV_DESCRIPCIONDET.Rows
                        If dr.RowState <> DataRowState.Deleted Then
                            If dr("NUMEROLINEA") = MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("LINEA").Value Then
                                Dim eliminaRegistro As Boolean = eliminarRegistrosDescDetalle(dr.IDPRODUCTO, dr.TIPOSUBPROD, dr.NUMEROREGISTRO)
                                If eliminaRegistro Then
                                    MOV_MOVIMIENTODETALLEBindingSource.RemoveCurrent()
                                End If
                            End If
                        End If
                    Next
                End If
                lEliminaDoc = True
                SalvaCambios(False)
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

End Class
